import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class day_02_方法引用_2 {
    public static void main(String[] args) {
        class Student {
            private String name;
            private Integer age;

            public Student(String name, Integer age) {
                this.name = name;
                this.age = age;
            }

            public Student(String str) {
                this.name = str.split("，")[0];
                this.age = Integer.parseInt(str.split("，")[1]);
            }

            public String getName() {
                return name;
            }

            @Override
            public String toString() {
                return name +  "-" + age;
            }

        }
        /*
         * 练习1：集合中存储一些字符串的数据，比如：张三，23。
         * 收集到Student类型的数组当中（使用方法引用完成）
         */
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list, "张三，23", "李四，24", "王五，25");

        Student[] students = list.stream().map(Student::new).toArray(Student[]::new);
        System.out.println(Arrays.toString(students));
        
        /*
         * 练习2：创建集合添加学生对象，学生对象属性：name，age
         * 只获取姓名并放到数组当中（使用方法引用完成）
         */
        ArrayList<Student> list1 = new ArrayList<>();
        Collections.addAll(list1, new Student("张三", 23), new Student("李四", 24), new Student("王五", 25));

        String[] arr = list1.stream().map(Student::getName).toArray(String[]::new);
        System.out.println(Arrays.toString(arr));

        /*
         * 练习3：创建集合添加学生对象，学生对象属性：name，age
         * 把姓名和年龄拼接成：张三-23的字符串，并放到数组当中（使用方法引用完成）
         */
        ArrayList<Student> list2 = new ArrayList<>();
        Collections.addAll(list2, new Student("张三", 23), new Student("李四", 24), new Student("王五", 25));

        String[] arr1 = list2.stream().map(Student::toString).toArray(String[]::new);
        System.out.println(Arrays.toString(arr1));
    }
}
